package kr.co.bettersoft.waitnumbercustomer.adapter;

import java.util.List;

import kr.co.bettersoft.waitnumbercustomer.activity.R;
import kr.co.bettersoft.waitnumbercustomer.common.CommonConstant;
import kr.co.bettersoft.waitnumbercustomer.domain.WaitStatusInfo;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
/**
 * 대기 목록을 화면에 보여줄때 사용되는 아답터이다.
 * @author blue
 *
 */
public class WaitStatusAdapter extends BaseAdapter{
	String TAG = "WaitStatusAdapter";
	private Context context;
	private final List<WaitStatusInfo> entries;
 
	// 폰트
	private Typeface typefaceNanumGothic= null; 
	private Typeface typefaceNanumGothicBold = null;
	
	public WaitStatusAdapter(Context context, List<WaitStatusInfo> entriesFn) {		
		this.context = context;
		this.entries = entriesFn;
		
		// 폰트 지정.
	    typefaceNanumGothic = Typeface.createFromAsset(context.getAssets(), CommonConstant.NanumGothic);  
	    typefaceNanumGothicBold = Typeface.createFromAsset(context.getAssets(), CommonConstant.NanumGothicBold);
	}
 
	public View getView(int position, View convertView, ViewGroup parent) {
 
		LayoutInflater inflater = (LayoutInflater) context
			.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 
		View listView;
 
		if (convertView == null) {
 
			listView = new View(context);
 
			// get layout from mobile.xml
			listView = inflater.inflate(R.layout.wait_status_adapter, null);
			
		} else {
			listView = (View) convertView;
		}
 
		TextView waitNumber = (TextView) listView.findViewById(R.id.waiting_number);			// 번호
		TextView customerId = (TextView) listView.findViewById(R.id.customer_id);			// 아이디
		TextView customerPersonCnt = (TextView) listView.findViewById(R.id.customer_companion);		// 인원		
		TextView companionAfterText = (TextView) listView.findViewById(R.id.companion_after_text);	
		TextView registerDate = (TextView) listView.findViewById(R.id.register_date);			// 등록일

		
////		Log.d(TAG,position+" - FirstItem?::"+((WaitingUser)entries.get(position)).getFirstItem());
		
		

		/*
		 * 내거랑 다른사람거는 구분해줌.
		 *   1. 내거만 배경색 바꾸는 경우
		 */
		/*
		if(((WaitStatusInfo)entries.get(position)).getBackGroundOn()){				// 내거
			listView.setBackgroundColor(Color.BLUE);
//			waitNumber.setTextColor(Color.WHITE);
			customerId.setTextColor(Color.WHITE);
			registerDate.setTextColor(Color.WHITE);
		}else{		// 남에 거	
			listView.setBackgroundColor(Color.WHITE);
//			waitNumber.setTextColor(Color.BLACK);
			customerId.setTextColor(Color.BLACK);
			registerDate.setTextColor(Color.BLACK);
		}
		*/
		
//		String tempIdWaitingUsers = ((WaitingUser)entries.get(position)).getIdWaitingUsers();		// 인덱스로 추정
//		Log.d(TAG,"tempIdWaitingUsers::"+tempIdWaitingUsers);
		
		/*
		 * 내거는 대기번호 대신 ME 를 쓰는 경우
		 */
		if(((WaitStatusInfo)entries.get(position)).getBackGroundOn()){				// 내거
//			waitNumber.setTextColor(Color.parseColor("#FF8124"));	// Color.rgb(200,0,0) //  0xAARRGGBB // 255 129	36
			waitNumber.setTextColor(Color.parseColor("#FF8931"));	// Color.rgb(200,0,0) //  0xAARRGGBB // R: 255 G: 137 B: 49
			waitNumber.setText("ME");		// ME
		}else{		// 남에 거	
			waitNumber.setTextColor(Color.BLACK);
			waitNumber.setText(((WaitStatusInfo)entries.get(position)).getNumberWaiting());		// 대기 번호
		}
//		waitNumber.setText(((WaitStatusInfo)entries.get(position)).getNumberWaiting());		// 대기 번호
		
		
		
		String tempUserName = ((WaitStatusInfo)entries.get(position)).getUserName();
		String tempPhoneNumber = ((WaitStatusInfo)entries.get(position)).getPhoneNumber();
		String tempQrCode = ((WaitStatusInfo)entries.get(position)).getQrCode();
		if(tempUserName.length()>0){					// 전번이 있으면 전번으로 출력
			customerId.setText(tempUserName);
		}else if(tempPhoneNumber.length()>0){											// 전번이 없으면 아이디로 출력
			if(!((WaitStatusInfo)entries.get(position)).getBackGroundOn()){		// 자신의 아이디는 마스킹하지 않는다.
				// 0~6까지는 그냥 보여줌. 7자리는 뒤의 4글자, 8글자부터는 4번째부터 4글자
				if(tempPhoneNumber.length()>7){
					tempPhoneNumber = tempPhoneNumber.substring(0, 3) + "-****-" + tempPhoneNumber.substring(7); 
				}else if(tempPhoneNumber.length()==7){
					tempPhoneNumber = tempPhoneNumber.substring(0, 3) + "-****";
				}  // else : 6글자 이하 마스킹 없음
			}else{
				if(tempPhoneNumber.length()>7){
					tempPhoneNumber = tempPhoneNumber.substring(0, 3) + "-" + tempPhoneNumber.substring(3, 7) +"-" + tempPhoneNumber.substring(7); 
				}else if(tempPhoneNumber.length()==7){
					tempPhoneNumber = tempPhoneNumber.substring(0, 3) + "-" + tempPhoneNumber.substring(3);
				} // else : 6글자 이하 전번 형식 처리 안함
			}
			customerId.setText(tempPhoneNumber);
		}else if(tempQrCode.length()>0){
			if(!((WaitStatusInfo)entries.get(position)).getBackGroundOn()){		// 자신의 아이디는 마스킹하지 않는다.
				if(tempQrCode.length()>7){
					tempQrCode = tempQrCode.substring(0, 3) + "-****-" + tempQrCode.substring(7); 
				}else if(tempQrCode.length()==7){
					tempQrCode = tempQrCode.substring(0, 3) + "-****";
				} // else : 6글자 이하 마스킹 없음
			}else{
				if(tempQrCode.length()>7){
					tempQrCode = tempQrCode.substring(0, 3) + "-" + tempQrCode.substring(3, 7) +"-" + tempQrCode.substring(7); 
				}else if(tempQrCode.length()==7){
					tempQrCode = tempQrCode.substring(0, 3) + "-" + tempQrCode.substring(3);
				} // else : 6글자 이하 전번 형식 처리 안함
			}
			customerId.setText(tempQrCode);
		}else{
			customerId.setText(context.getString(R.string.no_info));	// 정보 없음
		}
//		TextView customerPersonCnt = (TextView) listView.findViewById(R.id.modify_date);
//		customerPersonCnt.setText(context.getString(R.string.recent_update)+" : "+((WaitingUser)entries.get(position)).getLastUpdateDate());
//		customerPersonCnt.setText("수정일 : "+((WaitingUser)entries.get(position)).getModifyDate());
//		registerDate.setText(context.getString(R.string.register_date)+" : "+((WaitingUser)entries.get(position)).getRegisterDate());
		customerPersonCnt.setText(((WaitStatusInfo)entries.get(position)).getCompanion());
		registerDate.setText(((WaitStatusInfo)entries.get(position)).getRegisterDate());

		
		// 폰트 적용
		waitNumber.setTypeface(typefaceNanumGothicBold);		 
		customerId.setTypeface(typefaceNanumGothic);		 
		customerPersonCnt.setTypeface(typefaceNanumGothic);	
		companionAfterText.setTypeface(typefaceNanumGothic);
		registerDate.setTypeface(typefaceNanumGothic);		 
		
		return listView;
	}
 
	@Override
	public int getCount() {
		return entries.size();
	}
 
	@Override
	public Object getItem(int position) {
		return null;
	}
 
	@Override
	public long getItemId(int position) {
		return 0;
	}
}
